home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 009 / unprot.arc / SYMPHONY.TXT < prev    next >
Text File  |  1986-03-27  |  10KB  |  260 lines

  1. **************************** SYMPHONY Ver. 1.00 *************
  2.  
  3. ;Making SYMPHONY ver 1.00 to run with out SYMPHONY'S master disk -
  4. ;unprotecting it:
  5. ;
  6. ;A>REN SYMPHONY.CMP SYMPHONY.XXX
  7. ;A>DEBUG SYMPHONY.XXX
  8. ;-R                     ;find the segment where loaded and add 1000 to it
  9. ;                       ;DS=0DFA - xxxx=1DFA (0DFAH+1000H=1DFAH)
  10. ;-E xxxx:3A05 75        ;change INT 13 to INT 75H (see label SYMINT below)
  11. ;-W                     ;save changed file
  12. ;-Q                     ;exit debuger
  13. ;A>REN SYMPHONY.XXX SYMPHONY.CMP
  14. ;A>SYMPH                ;execute THIS PROGRAM (it modifies the changed interupt
  15. ;                       ;back to 13H since SYMPHONY does checksum of it's self)
  16. ;
  17. ;
  18. ;
  19. ;       assemble, link, exe2bin
  20. ;
  21. ;Execute this program before using SYMPHONY.
  22. ;There is no need to re-execute this program after exit from SYMPHONY, in
  23. ;order to use the SYMPHONY again, since it is a resident program
  24. ;
  25. ;
  26. ;to further examine the symphony for possibly other way to solve this, using
  27. ;DEBUG, do:
  28. ;A>DEBUG SYMPHONY.EXE
  29. ;-G2
  30. ;-T3
  31. ;-G8A40
  32. ;-T             ;at this point you will find the the subroutine that fills
  33. ;               ;location ds:8735 with n and int 13 (the second one) which
  34. ;               ;reads the serial number from flopy disk in A. Zeroing 8735
  35. ;               ;fools the symphony, and prevents it from testing for special
  36. ;               ;track/sector structure on the flopy. If the location 8735 is
  37. ;               ;not zeroed, debugging will not be possible after IP 8A4D,
  38. ;               ;since INT 3 will be modified by SYMPHONY.
  39. ;
  40.  
  41. SYMINT  EQU     75H     ;interupt to use
  42.  
  43. SYMFLG  EQU     8735H   ;see above for info
  44.  
  45. CSEG    SEGMENT
  46.         ASSUME  CS:CSEG,DS:CSEG
  47.         ORG     100H
  48. PROGRA: XOR     AX,AX
  49.         MOV     ES,AX                   ;set to segment 0 (interupt table)
  50.         XOR     DX,DX
  51.         MOV     AL,SYMINT               ;interupt number
  52.         MOV     CX,4                    ;get position in interupt table
  53.         MUL     CX
  54.         MOV     BX,AX
  55.         TEST    WORD PTR ES:[BX],0      ;test if set?
  56.         JZ      DOIT                    ;no, go set it
  57.         INT     20H                     ;exit to dos with out mod
  58.  
  59. DOIT:                                   ;get interupt routine address
  60.         MOV     word ptr ES:[BX],offset corc    ;store it at the apropriate int address
  61.         MOV     ES:[BX+2],CS            ;also store the segment
  62.         MOV     DX,5+16                 ;lenght of this pgm in segments
  63.         MOV     AX,3103H                ;exit & stay resident
  64.         INT     21H
  65.  
  66. ;this is the actual interupt
  67. CORC:   CLI
  68.         PUSH    ES                      ;save all used registers
  69.         PUSH    BP
  70.         PUSH    BX
  71.         MOV     BP,SP
  72.         MOV     ES,[BP+8]               ;get calling segment from stack
  73.         MOV     BX,[BP+6]               ;get calling address from stack
  74.         DEC     BX                      ;back up one
  75.         MOV     BYTE PTR ES:[BX],13H    ;store interupt 13h there
  76.         MOV     BYTE PTR DS:SYMFLG,0    ;zero out the flopy test flag
  77.         POP     BX                      ;restore registers
  78.         POP     BP
  79.         POP     ES
  80.         STI
  81.         IRET                            ;back to symphony
  82.  
  83. CSEG    ENDS
  84.         END     PROGRA
  85.  
  86. **************************** SYMPHONY Ver. 1.00 *************
  87.  
  88.  
  89. Here is the "ENGLISH" version of the Symphony Unprotect procedure:
  90.  
  91. 1. Rename the program
  92.       REN SYMPHONY.CMP SYMPHONY.XXX
  93.  
  94. 2. Type  DEBUG SYMPHONY.XXX
  95.  
  96. 3. After the - prompt appears, type   R       and press Enter
  97.  
  98.    Look at the value displayed for the DS register (left hand, second line)
  99.    Whatever the value is, add 1000 to it. For example, if the DS contains
  100.    05DF, add 1000 to make it 15DF. I will refer to this new value as yyyy
  101.    in the next step.
  102.  
  103. 4. Type  E yyyy:3A05 75      press Enter
  104.  
  105. 5. Type  W                   press Enter
  106.  
  107. 6. Type  Q                   press Enter
  108.  
  109. 7. Rename the program back to the original name
  110.  
  111.    REN SYMPHONY.XXX SYMPHONY.CMP
  112.  
  113.  
  114. Now, BEFORE you run the SYMPHONY program, run the program in this Library
  115. call SYMPH.COM. This need only be run ONCE after each boot. If you want,
  116. you may place it in your AUTOEXEC.BAT file. It uses Interrupt 75H which
  117. should not conflict with other programs (NOTE.. this may not be true on the
  118. 3270PC).
  119.  
  120. After running SYMPH.COM, you may run your patched version of SYMPHONY
  121. without the need for the master diskette.
  122.  
  123. The other files in this library are:
  124.  
  125. The original unprotection scheme which required you to assemble a  program.
  126. The assembler SYMPH.COM.
  127.  
  128. Good Luck.
  129. nged file
  130. ;-Q                     ;exit debuger
  131. ;A>REN SYMPHONY.XXX SYMPHONY.CMP
  132. ;A>SYMPH                ;execute THIS PROGRAM (it modifies the changed interupt
  133. ;                       ;back to 13H since SYMPHONY does checksum of it's self)
  134. ;
  135. ;
  136. ;
  137. ;       assemble, link, exe2bin
  138. ;
  139. ;Execute this program before using SYMPHONY.
  140. ;There is no need to re-execute this program after exit from SYMPHONY, in
  141. ;order to use the SYMPHONY again, since it is a resident program
  142. ;
  143. ;
  144. ;to further examine the symphony for possibly other way to solve this, using
  145. ;DEBUG, do:
  146. ;A>DEBUG SYMPHONY.EXE
  147. ;-G2
  148. ;-T3
  149. ;-G8A40
  150. ;-T             ;at this point you will find the the subroutine that fills
  151. ;               ;location ds:8735 with n and int 13 (the second one) which
  152. ;               ;reads the serial number from flopy disk in A. Zeroing 8735
  153. ;               ;fools the symphony, and prevents it from testing for special
  154. ;               ;track/sector structure on the flopy. If the location 8735 is
  155. ;               ;not zeroed, debugging will not be possible after IP 8A4D,
  156. ;               ;since INT 3 will be modified by SYMPHONY.
  157. ;
  158.  
  159. SYMINT  EQU     75H     ;interupt to use
  160.  
  161. SYMFLG  EQU     8735H   ;see above for info
  162.  
  163. CSEG    SEGMENT
  164.         ASSUME  CS:CSEG,DS:CSEG
  165.         ORG     100H
  166. PROGRA: XOR     AX,AX
  167.         MOV     ES,AX                   ;set to segment 0 (interupt table)
  168.         XOR     DX,DX
  169.         MOV     AL,SYMINT               ;interupt number
  170.         MOV     CX,4                    ;get position in interupt table
  171.         MUL     CX
  172.         MOV     BX,AX
  173.         TEST    WORD PTR ES:[BX],0      ;test if set?
  174.         JZ      DOIT                    ;no, go set it
  175.         INT     20H                     ;exit to dos with out mod
  176.  
  177. DOIT:                                   ;get interupt routine address
  178.         MOV     word ptr ES:[BX],offset corc    ;store it at the apropriate int address
  179.         MOV     ES:[BX+2],CS            ;also store the segment
  180.         MOV     DX,5+16                 ;lenght of this pgm in segments
  181.         MOV     AX,3103H                ;exit & stay resident
  182.         INT     21H
  183.  
  184. ;this is the actual interupt
  185. CORC:   CLI
  186.         PUSH    ES                      ;save all used registers
  187.         PUSH    BP
  188.         PUSH    BX
  189.         MOV     BP,SP
  190.         MOV     ES,[BP+8]               ;get calling segment from stack
  191.         MOV     BX,[BP+6]               ;get calling address from stack
  192.         DEC     BX                      ;back up one
  193.         MOV     BYTE PTR ES:[BX],13H    ;store interupt 13h there
  194.         MOV     BYTE PTR DS:SYMFLG,0    ;zero out the flopy test flag
  195.         POP     BX                      ;restore registers
  196.         POP     BP
  197.         POP     ES
  198.         STI
  199.         IRET                            ;back to symphony
  200.  
  201. CS
  202.  
  203. **************************** SYMPHONY Ver. 1.1 *************
  204.  
  205.             Suppressing the Serial Number Search on Drive A:
  206.                             for Symphony 1.1
  207.  
  208. NOTE: THE METHODS DESCRIBED BELOW APPLY ONLY TO THE VERSION OF SYMPHONY
  209. 1.1 PRODUCED BY THE "COPYIIPC" ARCHIVAL BACKUP PROGRAM.  DO NOT ATTEMPT
  210. THE FOLLOWING STEPS IF YOU HAVE NOT BACKED-UP UP YOUR SYMPHONY 1.1
  211. PROGRAM DISK WITH COPYIIPC.
  212.  
  213.     A number of people are under the impression that Symphony 1.1 must
  214. still search for the serial number of the key disk even after having
  215. used COPYIIPC to make a backup copy that will run from a hard disk.
  216.  
  217.     This is not necessarily true, and it proves that it pays to read the
  218. documentation that programs come with.  COPYIIPC includes a program
  219. called NOKEY which, if executed prior to running Symphony 1.1, will
  220. prevent the serial number search to drive A:.  If fact, NOKEY even
  221. supplies a serial number of 0's for Symphony to display on the opening
  222. screen.
  223.  
  224.     But even if you use NOKEY, you may still encounter problems.  There
  225. is a situation in which NOKEY will not work properly.  If you use
  226. Sidekick, the "ACCESS" program to start Symphony 1.1 together with NOKEY
  227. you will get a message "cannot find file COMMAND.COM".  You have to stop
  228. using either NOKEY or ACCESS to run Symphony 1.1 successfully from a
  229. hard disk.
  230.  
  231.     Luckily there is a way to get aroung this problem.  As a minor side
  232. benefit, you will no longer need to use NOKEY to stop the serial number
  233. search.  You will be making a slight modification to the file
  234. "SYMPHONY.EXE".  Note that this file is created by COPYIIPC.  Do not
  235. modify any other file!
  236.  
  237.     Follow the DEBUG instructions below.  After you finish, Symphony 1.1
  238. will not go to drive A:.  Since Copyiipc has already removed the
  239. Softguard protection, this means Symphony 1.1 is usable from a hard disk
  240. without any dependence on your floppy drive.
  241.  
  242.  -------------------------------------------------------------------
  243. C>copy symphony.exe symphony.bak        (make a backup, just in case)
  244.  
  245. C>ren symphony.exe symphony.xyz
  246.  
  247. C>debug symphony.xyz
  248. -d 0af4 0af5             ;display locations 0af4-0af5
  249. XXXX:0AF4  CD 13         ;if you don't see exactly this, don't continue
  250. -e 0af4 90 90            ;NOP out the disk read instruction
  251. -e 0afb 90 90            ;cause "serial # not found" msg. to be printed
  252. -w                       ;write the modified file
  253. Writing 1AD1 bytes
  254. -q
  255. C>ren symphony.xyz symphony.exe
  256. --------------------------------------------------------------------
  257.  
  258.     Be sure to stop using NOKEY, since it is no longer required with the
  259. above modification.
  260.